﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace GEAR_Structure.GearToArchlineXP
{
    public class DrawStratigraphyToArchlineXp
    {
        //carico la dll per dialogare con archline
        private const string _dllLocation = "Ade.2012.dll";
        [DllImport(_dllLocation)]
        private static extern void AdeSendCommandString(string command);
        [DllImport(_dllLocation)]
        private static extern void AdeConnect(System.Int32 HWnd);
        [DllImport(_dllLocation)]
        private static extern void AdeDisconnect();



        Stratigraphy str;//stratigrafia da disegnare in archline xp
        double fattoreScala;//fattore di scala con cui archlineXp disegnera il particolare 2=doppio 3=triplo rispetto alla sua grandezza 
        double h_Particolare=0.5;//altezza del particolare con fattore di scala 1 uguale a 50cm
        /// <summary>
        /// altezza del particolare con fattore di scala 1 uguale a 50cm
        /// </summary>
        public double H_Particolare
        {
            get { return h_Particolare; }
            set { h_Particolare = value; }
        }

        /// <summary>
        /// imposta la stratigrafia di cui archlineXp disegnerà il particolare
        /// </summary>
        public Stratigraphy Str
        {
            set { str = value; }
        }
        /// <summary>
        /// inposta il fattore di scala con cui archlineXp disegnera il particolare 2=doppio 3=triplo rispetto alla sua grandezza relae
        /// </summary>
        public double FattoreScala
        {
            get { return fattoreScala; }
            set { fattoreScala = value; }
        }

        //costruttore
        public DrawStratigraphyToArchlineXp(Stratigraphy _str)
        {
            this.str = _str;
        }
        //costruttore
        public DrawStratigraphyToArchlineXp()
        {
            //neccessario per derivazione
        }

        /// <summary>
        /// passa i parametri ad archlineXP
        /// </summary>
        /// <param name="command"></param>
        void sendcommandtoarchline(string command)
        {
            AdeConnect(0); //apre la connessone con archline
            AdeSendCommandString(command); //passi il comando sotto forma di stringa
            AdeDisconnect();//chiudi la connesione di archline
        }

        public void DrawStratigrafy()
        {
           
                string command = "#SYSTEMDIALOG line ";// = "#SYSTEMDIALOG line 0 0 0 0.5; 0.02 0 0 -0.5; 0.3 0 0 0.5; 0.02 0 0 -0.5";
                int i;
                int n = (str.Layers.Count);
                string P1x, P1y;//variabili coordinate
                double h = h_Particolare;
                command += "0 0 0 0.5;";
                for (i = 0; i < n; i++)
                {
                    h = -h;
                    P1x = str.Layers[i].Tickness.ToString().Replace(",", ".");
                    P1y = (h).ToString().Replace(",", ".");
                    command += P1x + " 0 0 " + P1y + ";";
                }
                sendcommandtoarchline(command);
            
        }
    }
}
